package storm;

import java.util.ArrayList;
import java.util.Vector;

import storm.Data.Data;
import storm.Processors.Processor;
import storm.Tasks.Task;

public interface ITaskListManager {

	/**
	 * 
	 * @param T
	 */
	public abstract void addTasks(Task T);

	/**
	 * 
	 * @param T
	 */
	public abstract void addData(Data T);

	/**
	 * 
	 */
	public abstract void init();

	/**
	 * 
	 */
	public abstract void onTick();

	/**
	 * 
	 * @return
	 */
	public abstract ArrayList getProcessors();

	/**
	 * 
	 * @return
	 */
	public abstract ArrayList getReadyTask();

	/**
	 * 
	 * @param P
	 */
	public abstract void addCPU(Processor P);

	/**
	 * 
	 */
	public abstract String getName();

	/**
	 * 
	 */
	public abstract void processingConstraint();

	/**
	 * get list of task being  block, task in waiting state 
	 * 
	 * @return
	 */
	public abstract ArrayList getWaitingTask();

	/**
	 * compute for name dependancy beetwen task for graphicall (data graph) 
	 * @param name2
	 * @param matrice_adjacence
	 */
	public abstract void dataSetFactory(Vector name2, Vector matrice_adjacence);

	/**
	 * 
	 * @return
	 */
	public abstract ArrayList getALLProcessors();

	/**
	 * 
	 * @return
	 */
	public abstract ArrayList getALLTask();

	/**
	 * 
	 * @return
	 */
	public abstract ArrayList getDatas();

	/**
	 * search a tag with xml id
	 * @param num
	 * @return
	 */
	public abstract Task getTaskbyId(int num);

	public abstract Processor getProcessorsById(int numCpu);

}